Основы статистики
Числовые характеристики выборки
В этой главе мы будем вычислять числовые характеристки выборки – результатов измерений длины и толщины клюва для двух видов вьюрков. Эти величины дают качественное представление об эмпирических данных и характеризуют средние значения, разброс и форму распределения. Мы рассмотрим следующие числовые характеристики выборки: среднее арифметическое, медиана, среднее квадратическое отклонение, размах, межквартильный размах, асимметрия и эксцесс.
Сначала подключим необходимые библиотеки, прочитаем файл с данными finchData.csv и выделим из него данные для каждого из двух видов вьюрков в отдельные таблицы scandens и fortis:
using CSV, DataFrames, Plots, StatsPlots, Statistics, StatsBase
data = CSV.read("finchData.csv", DataFrame)
scandens = data[data.Species .== "scandens", :]
fortis = data[data.Species .== "fortis", :]
Вычисление среднего арифметического выборки
Среднее значение (также называемое средним арифметическим или выборочным средним) является распространенной характеристикой центра распределения выборки. Оно определется следующим образом:
где – объем выборки, т.е. число наблюдений; – значения выборки.
Среднее значение полезно применять для симметричных распределений, но оно очень чувствительно к выбросам. Если выборка распределена несимметрично или имеет экстремальные выбросы, то нужно рассмотреть, как эти факторы повлияют на расчет среднего значения.
В Engee среднее значение выборки вычисляется с помощью функции mean, содержащейся в библиотеке Statistics.
Пример. Найдем средние значения длины и ширины клюва для кактусовых земляных вьюрков (scandens) по результатам наблюдений 1975 года и 2012 года. Сначала для удобства создадим соответствующие массивы:
sLength1975 = scandens.BeakLength[scandens.Year .== 1975, :]
sLength2012 = scandens.BeakLength[scandens.Year .== 2012, :]
sDepth1975 = scandens.BeakDepth[scandens.Year .== 1975, :]
sDepth2012 = scandens.BeakDepth[scandens.Year .== 2012, :];
Затем вычислим средние значения:
display(mean(sLength1975))
display(mean(sLength2012))
display(mean(sDepth1975))
display(mean(sDepth2012))
✏️Задание 1
Найдите средние значения длины и ширины клюва для средних земляных вьюрков (fortis) по результатам наблюдений 1975 года и 2012 года.
Решение
# Создаем массивы
fLength1975 = fortis.BeakLength[fortis.Year .== 1975, :]
fLength2012 = fortis.BeakLength[fortis.Year .== 2012, :]
fDepth1975 = fortis.BeakDepth[fortis.Year .== 1975, :]
fDepth2012 = fortis.BeakDepth[fortis.Year .== 2012, :]
# Вычисляем средние значения
display(mean(fLength1975))
display(mean(fLength2012))
display(mean(fDepth1975))
display(mean(fDepth2012))
Вычисление медианы
Медиана – еще одна характеристика среднего значения выборки. Медиана набора чисел – такое число, которое находится в середине этого набора, если его упорядочить по возрастанию, т.е. такое число, что половина элементов набора не меньше него, а другая половина не больше. Медиана гораздо более устойчива, чем среднее арифметическое, к небольшим изменениям значений данных и является особенно полезной характеристикой для несимметричных распределений.
В Engee медиана вычисляется с помощью функции median, содержащейся в библиотеке Statistics.
Пример. Найдем медианы длины и ширины клюва для кактусовых земляных вьюрков (scandens) по результатам наблюдений 1975 года и 2012 года.
display(median(sLength1975))
display(median(sLength2012))
display(median(sDepth1975))
display(median(sDepth2012));
✏️Задание 2
Найдите медианы длины и ширины клюва для средних земляных вьюрков (fortis) по результатам наблюдений 1975 года и 2012 года.
Решение
display(median(fLength1975))
display(median(fLength2012))
display(median(fDepth1975))
display(median(fDepth2012))
Теперь построим среднее арифметическое и медиану на одном полотне с гистограммой распределения длины клюва кактусовых земляных вьюрков (scandens) по результатам наблюдений 1975 года.
using StatsBase, StatsPlots
m1 = mean(sLength1975)
m2 = median(sLength1975)
histogram(sLength1975, label="Данные")
xlabel!("Длина клюва, мм")
ylabel!("Количество наблюдений")
plot!([m1, m1], [0, 25], lc=:black, ls=:dash, label="Среднее")
plot!([m2, m2], [0, 25], lc=:red, ls=:dash, label="Медиана")
✏️Задание 3
Постройте среднее арифметическое и медиану на одном полотне с гистограмой распределения длины клюва средних земляных вьюрков (fortis) по результатам наблюдений 2012 года.
Решение
using StatsBase, StatsPlots
m1 = mean(fLength2012)
m2 = median(fLength2012)
histogram(fLength2012, label="Данные")
xlabel!("Длина клюва, мм")
ylabel!("Количество наблюдений")
plot!([m1, m1], [0, 37], lc=:black, ls=:dash, label="Среднее")
plot!([m2, m2], [0, 37], lc=:red, ls=:dash, label="Медиана")
Вычисление среднего квадратического отклонения
Выборочная дисперсия – показатель рассеяния значений выборки относительно его среднего значения. Она определяется как среднее значение квадрата отклонения:
Среднее квадратическое отклонение (или стандартное отклонение) представляет собой квадратный корень из выборочной дисперсии:
В Engee среднее квадратическое отклонение вычисляется с помощью функции std, содержащейся в библиотеке Statistics.
Пример. Найдем среднее квадратическое отклонение длины и ширины клюва для кактусовых земляных вьюрков (scandens) по результатам наблюдений 1975 года и 2012 года.
display(std(sLength1975))
display(std(sLength2012))
display(std(sDepth1975))
display(std(sDepth2012))
✏️Задание 4
Найдите среднее квадратическое отклонение длины и ширины клюва для средних земляных вьюрков (fortis) по результатам наблюдений 1975 года и 2012 года.
Решение
display(std(fLength1975))
display(std(fLength2012))
display(std(fDepth1975))
display(std(fDepth2012))
Вычисление размаха выборки
Размах выборки – это простейшая мера разброса данных, равная разности между максимальным и минимальным значениями выборки. Эта величина очень чувствительна к крайним значениям распределения.
В Engee размах выборки X можно вычислить по формуле maximum(X) - minimum(X).
✏️Задание 5
Найдите размах длины и ширины клюва отдельно для кактусовых земляных вьюрков (scandens) и средних земляных вьюрков (fortis) по результатам наблюдений 1975 года и 2012 года (всего 8 значений).
Решение
display(maximum(sLength1975) - minimum(sLength1975))
display(maximum(sLength2012) - minimum(sLength2012))
display(maximum(sDepth1975) - minimum(sDepth1975))
display(maximum(sDepth2012) - minimum(sDepth2012))
display(maximum(fLength1975) - minimum(fLength1975))
display(maximum(fLength2012) - minimum(fLength2012))
display(maximum(fDepth1975) - minimum(fDepth1975))
display(maximum(fDepth2012) - minimum(fDepth2012))
Вычисление межквартильного размаха
Межквартильный размах – еще одна мера разброса данных. Эта величина представляет собой расстояние между 25-м и 75-м перцентилем данных, то есть ширину области, содержащей 50% всех значений выборки. Как и медиана, межквартильный размах устойчив к выбросам и особенно полезен для несимметричных распределений.
В Engee межквартильный размах вычисляется с помощью функции iqr, содержащейся в библиотеке StatsBase.
Пример. Найдем межквартильный размах длины клюва для кактусовых земляных вьюрков (scandens) по результатам наблюдений 1975 года. Для этого сначала с помощью функции vec преобразуем наши данные из типа данных Matrix в тип Vector, а затем с помощью функции iqr вычислим межквартильный размах.
display(iqr(vec(sLength1975)))
✏️Задание 6
Найдите межквартильный размах длины и ширины клюва отдельно для кактусовых земляных вьюрков (scandens) и средних земляных вьюрков (fortis) по результатам наблюдений 1975 года и 2012 года (всего 8 значений).
Решение
display(iqr(vec(sLength1975)))
display(iqr(vec(sLength2012)))
display(iqr(vec(sDepth1975)))
display(iqr(vec(sDepth2012)))
display(iqr(vec(fLength1975)))
display(iqr(vec(fLength2012)))
display(iqr(vec(fDepth1975)))
display(iqr(vec(fDepth2012)))
Вычисление асимметрии и эксцесса
Характеристиками формы распределения являются асимметрия и эксцесс.
Асимметрия – это мера несимметричности распределения. Асимметрия, равная 0, указывает на идеально симметричное распределение выборки. Положительное значение асимметрии показывает, что больше значений в выборке находится справа от среднего значения, чем слева, т.е. оно имеет более длинный правый хвост. Аналогично, отрицательное значение асимметрии показывает, что больше значений в выборке находится слева от среднего значения, чем справа, т.е. оно имеет более длинный левый хвост.
В Engee асимметрию можно вычислить с помощью функции skewness, содержащейся в библиотеке StatsBase.
Эксцесс – это мера остроты пика распределения. Значение, равное нулю, соответствует нормальному распределению. Если значение больше нуля, то у распределения более узкий пик в центре и более длинные хвосты. Отрицательное значение эксцесса присуще распределению с широкой центральной зоной и короткими хвостами.
В Engee эксцесс можно вычислить с помощью функции kurtosis, содержащейся в библиотеке StatsBase.
Пример. Найдем асимметрию и эксцесс длины клюва для кактусовых земляных вьюрков (scandens) по результатам наблюдений 1975 года.
display(skewness(sLength1975))
display(kurtosis(sLength1975))
✏️Задание 7
Найдите асимметрию и эксцесс длины и ширины клюва отдельно для кактусовых земляных вьюрков (scandens) и средних земляных вьюрков (fortis) по результатам наблюдений 1975 года и 2012 года (всего 16 значений).
Решение
println("Асимметрия")
display(skewness(sLength1975))
display(skewness(sLength2012))
display(skewness(sDepth1975))
display(skewness(sDepth2012))
display(skewness(fLength1975))
display(skewness(fLength2012))
display(skewness(fDepth1975))
display(skewness(fDepth2012))
println("Эксцесс")
display(kurtosis(sLength1975))
display(kurtosis(sLength2012))
display(kurtosis(sDepth1975))
display(kurtosis(sDepth2012))
display(kurtosis(fLength1975))
display(kurtosis(fLength2012))
display(kurtosis(fDepth1975))
display(kurtosis(fDepth2012))
Положительные значения асимметрии для данных за 1975 год означают, что они слегка смещены вправо. Данные за 2012 год выглядят довольно симметрично, поэтому значение асимметрии близко к нулю и равно -0,05.